package com.xiaoshuidi.cloud.module.member.controller.admin.coupon.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author Alex
 * @version generator
 * @description 优惠券表Form实体
 * @date 2023-03-14 15:06:11
 */
@Data
public class CouponUpdateForm {

    /**
     * 主键id
     */
    @Schema(description = "主键id")
    private Long id;
    /**
     * 优惠券类型 1预定优惠|2老带新优惠|3新签约优惠|4 内部员工优惠|5其他优惠
     */
    @Schema(description = "优惠券类型 1预定优惠|2老带新优惠|3新签约优惠|4 内部员工优惠|5其他优惠")
    private Integer couponType;
    /**
     * 优惠券名称
     */
    @Schema(description = "优惠券名称")
    private String couponName;
    /**
     * 优惠类型|0 立减|1 折扣
     */
    @Schema(description = "优惠类型|0 立减|1 折扣")
    private Integer preferentialContentType;
    /**
     * 优惠金额 或者百分比
     */
    @Schema(description = "优惠金额 或者百分比")
    private BigDecimal marginPreference;
    /**
     * 老客 优惠类型| 0 立减|1 折扣
     */
    @Schema(description = "新客 优惠类型| 0 立减|1 折扣")
    private Integer preferentialContentTypeOld;
    /**
     * 老客 优惠金额 或者百分比
     */
    @Schema(description = "新客 优惠金额 或者百分比")
    private BigDecimal marginPreferenceOld;
    /**
     * 优惠券库存量 -1没有限制
     */
    @Schema(description = "优惠券总量 -1没有限制")
    private Long stock;
    /**
     * 优惠券剩余量 -1没有限制
     */
    @Schema(description = "优惠券剩余量 -1没有限制")
    private Long surplusStock;
    /**
     * 优惠券使用量
     */
    @Schema(description = "优惠券使用量")
    private Integer couponUsage;
    /**
     * 使用规则
     */
    @Schema(description = "使用规则")
    private String useRules;
    /**
     * 活动开始时间
     */
    @Schema(description = "活动开始时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date activityStartTime;
    /**
     * 活动结束时间
     */
    @Schema(description = "活动结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date activityEndTime;
    /**
     * 活动门店 -1不限制门店
     */
//	@Schema(description ="活动门店 -1不限制门店")
//	private Long activityStore;

    @Schema(description = "活动门店 -支持多门店")
    private List<Long> apartmentIds;
    /**
     * 预定开始时间
     */
    @Schema(description = "预定开始时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date scheduledStartTime;
    /**
     * 预定结束时间
     */
    @Schema(description = "预定结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date scheduledEndTime;
    /**
     * 预定金额
     */
    @Schema(description = "预定金额")
    private BigDecimal scheduledAmount;
    /**
     * 最低租赁月份
     */
    @Schema(description = "最低租赁月份")
    private Integer miniLeaseMonth;
    /**
     * 最高租赁月份
     */
    @Schema(description = "最高租赁月份")
    private Integer maxLeaseMonth;
    /**
     * 使用开始时间
     */
    @Schema(description = "使用开始时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date expirationStartTime;
    /**
     * 使用结束时间
     */
    @Schema(description = "使用结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date expirationEndTime;
    /**
     * 签约开始日期
     */
    @Schema(description = "签约开始日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date signingStartTime;
    /**
     * 签约结束时间
     */
    @Schema(description = "签约结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date signingEndTime;
    /**
     * 使用类型 1合同期类有效 2 发券后多少天 3 固定日期
     */
    @Schema(description = "使用类型 1合同期类有效 2 发券后多少天 3 固定日期")
    private Integer couponUsageTimeType;
    /**
     * 使用日期 -1 合同期内有效|大于0 发券后多少天有效
     */
    @Schema(description = "使用日期 -1 合同期内有效|大于0 发券后多少天有效")
    private Integer couponUsageTime;
    /**
     * 发券数量限制 -1 不限制|大于0 限制张数
     */
    @Schema(description = "发券数量限制 -1 不限制|大于0 限制张数")
    private Integer quantityLimit;
    /**
     * 使用叠加 1与同一优惠可叠加使用|2 与其他活动可叠加使用
     */
    @Schema(description = "使用叠加 1与同一优惠可叠加使用|2 与其他活动可叠加使用")
    private List<Integer> couponUseOverlays;
    /**
     * 凭证
     */
    @Schema(description = "凭证")
    private List<String> couponUrl;
    /**
     * 创建人
     */
    @Schema(description = "创建人")
    private String creator;
    /**
     * 修改人
     */
    @Schema(description = "修改人")
    private String updater;
    /**
     * 状态| 1【未提交】：操作有 查看、编辑、删除|2【审核中】：操作有 查看|3【审批驳回】：操作有 查看、编辑、删除|4【未开始】：操作有 查看、终止
     * |5【进行中】：操作有 查看、数据、终止|6【已终止】手动终止后，不能继续发券，记录终止时间|7【已结束】：操作有 查看、数据
     */
    @Schema(description = "状态| 1【未提交】：操作有 查看、编辑、删除|2【审核中】：操作有 查看|3【审批驳回】：操作有 查看、编辑、删除|4【未开始】：操作有 查看、终止" +
            "|5【进行中】：操作有 查看、数据、终止|6【已终止】手动终止后，不能继续发券，记录终止时间|7【已结束】：操作有 查看、数据")
    private Integer couponStatus;
    /**
     * 是否删除 0-未删除 1-已删除
     */
    @Schema(description = "是否删除 false-未删除 true-已删除")
    private Boolean isDelete;

}
